문제 설명

이진 탐색 트리·요약

당신의 과제는 네 가지 주요 연산을 지원하는 이진 탐색 트리를 구현하는 것입니다.

  • 연산의 수는 $N$이며, $1 \le N \le 2 \cdot 10^5$입니다.
  • ins k: 정수 키 $k$를 이진 탐색 트리에 삽입합니다. 만약 $k$가 이미 존재하면, 이 연산은 아무런 효과가 없습니다.
  • find k: 키 $k$를 검색합니다. 존재하면 'true'를 출력하고, 그렇지 않으면 'false'를 출력합니다.
  • succ k: $k$의 후속자(후행자)를 찾습니다—트리 내에서 $k$보다 엄격히 큰 가장 작은 키입니다. 그런 키가 없으면 'null'을 출력합니다.
  • pred k: $k$의 전속자(전행자)를 찾습니다—트리 내에서 $k$보다 엄격히 작은 가장 큰 키입니다. 그런 키가 없으면 'null'을 출력합니다.
  • 핵심 가정: 후속자 및 전속자 쿼리의 경우, 키 $k$는 트리에 반드시 존재함이 보장됩니다.